INC_DIR := include
BUILD_DIR := build
TARGET := main

# 自动获取OpenCV编译标志
OPENCV_CFLAGS := $(shell pkg-config --cflags opencv4)
OPENCV_LIBS := $(shell pkg-config --libs opencv4)

# 源文件列表
SRC_DIR := src
SRCS := $(wildcard $(SRC_DIR)/*.cpp)
OBJS := $(patsubst $(SRC_DIR)/%.cpp,$(BUILD_DIR)/%.o,$(SRCS))

# 编译参数配置（添加OpenCV标志）
CXXFLAGS := -std=c++17 -Wall -Wextra -I$(INC_DIR) $(OPENCV_CFLAGS)
LDFLAGS := $(OPENCV_LIBS) -lsqlite3

# 默认目标（生成到根目录）
all: $(TARGET)

# 链接规则（输出到根目录）
$(TARGET): $(OBJS)
	$(CXX) $(OBJS) -o $@ $(LDFLAGS)

# 编译规则（保持对象文件在build目录）
$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp
	@mkdir -p $(@D)
	$(CXX) $(CXXFLAGS) -c $< -o $@

# 清理（添加删除根目录可执行文件）
clean:
	rm -rf $(BUILD_DIR) $(TARGET)

.PHONY: all clean
